home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / RJUPDAT2.ZIP / RTFM11.ZIP / RME11.DOC < prev    next >
Text File  |  1994-12-29  |  4KB  |  104 lines

  1.  
  2.  
  3.                  Rajaat's Tiny Flexible Mutator [RTFM] │
  4.                  Version 1.1                           │
  5.                  (C) 1994 Rajaat                       │
  6.                   ─────────────────────────────────────┘
  7.  
  8.  
  9. What is it? │
  10.  ───────────┘
  11.  
  12.         RTFM is an object module that can be linked to your virus to make
  13.         it impossible for a scanner to use a simple string. It will encrypt
  14.         your virus and generates a random decryptor using random registers
  15.         and random instructions. Therefore, an algorithmic approach will be
  16.         needed to detect viruses using this object module.
  17.  
  18. How to use it │
  19.  ─────────────┘
  20.  
  21.         RTFM is very easy to use, and regular assembler users will have no
  22.         problem using this routine. RTFM needs some input registers and will
  23.         give some return values after processing.
  24.  
  25. Input │
  26.  ─────┘
  27.  
  28.         DS:SI   = piece of code to encrypt
  29.         ES:SI   = place of decryptor+encrypted code
  30.         CX      = length of code (include the mutator (mut_len))
  31.         BX      = offset of decryptor in file
  32.         AX      = flag bits
  33.                         0 = 1 do not use junk code
  34.  
  35. Output │
  36.  ──────┘
  37.  
  38.         DS:DX   = place of decryptor+encrypted code
  39.         CX      = length of encrypted code+decryptor
  40.         BP      = preserved
  41.         Other registers might be trashed
  42.  
  43. Put this at the start of your virus code │
  44.  ────────────────────────────────────────┘
  45.  
  46.                 extrn mut_top:near, mut_bottom:near, mut_len:abs
  47.                 extrn rnd_init:near, rnd_get:near
  48.                 extrn mutate:near
  49.  
  50. Before writing the virus to a file, call the engine with these parameters │
  51.  ─────────────────────────────────────────────────────────────────────────┘
  52.  
  53.                 mov si,offset virusstart        ; with non-resident virii
  54.                                                 ; you will need a delta offset
  55.  
  56.                 mov di,offset workspace         ; make sure you point this to
  57.                                                 ; an area that has enough space
  58.                                                 ; virus the virus (including
  59.                                                 ; the mutation engine) and the
  60.                                                 ; decryptor
  61.  
  62.                 mov cx,viruslength+mut_len      ; the length of the virus (and
  63.                                                 ; the length of the mutation
  64.                                                 ; engine)
  65.  
  66.                 mov bx,absstart                 ; absolute start of the
  67.                                                 ; decryptor
  68.  
  69.                 xor ax,ax                       ; no flags set
  70.  
  71.                 call mutate                     ; and mutate!
  72.  
  73. Linking the module │
  74.  ──────────────────┘
  75.  
  76.         To link RTFM to your virus, use TLINK from Borland. Use the following
  77.         syntax :
  78.  
  79.                 TLINK /T MYVIRUS+RME11
  80.  
  81. Notes │
  82.  ─────┘
  83.  
  84.         RTFM was not meant to make an unscannable virus, it's only purpose is
  85.         to make string scanning impossible. The code generated by RTFM is by
  86.         no means extremely polymorphic and it will not be very difficult to
  87.         devise an algorithm to detect viruses using RTFM. The size of RTFM is
  88.         smaller than 650 bytes. This is not too big.
  89.  
  90. History │
  91.  ───────┘
  92.  
  93.         1.0     initial version
  94.         1.1     the decrease counter can get an add or sub
  95.                 the increase pointer can get an add or sub
  96.                 added random byte operation with one register as trash function
  97.  
  98. Greetings │
  99.  ─────────┘
  100.  
  101.         Omega [AD], NuKE, Phalcon/Skism, Immortal Riot, TridenT, VLAD, YAM,
  102.         Trinity, Zerial, DNA and all other virus writers I forgot!
  103.  
  104.